// 导入依赖包
import Router from "koa-router";
import bodyparser from "koa-bodyparser";
import cors from "@koa/cors";
// 导入模型
import { Book } from "../modle/Book.js";

// 创建路由实例
const router = new Router();

/**
 * 路由方法
 */

// 查询所有书籍
router.get("/books", async (ctx, next) => {
  // 查询所有书籍
  const books = await Book.findAll();

  // 成功状态码
  ctx.status = 200;

  // 响应内容
  ctx.body = {
    code: 200,
    data: books,
    msg: "查询所有成功",
  };

  // 执行下一个中间件
  await next();
});

// 查询一本书籍
router.get("/books/:id", async (ctx, next) => {
  // 获取 id
  const id = ctx.params.id;

  // 成功状态码
  ctx.status = 200;

  // 查询一本书籍
  const book = await Book.findByPk(id);
  // 响应内容
  ctx.body = {
    code: 200,
    data: book,
    msg: "查询一本成功",
  };

  // 执行下一个中间件
  await next();
});

// 新增一本书籍
router.post("/books", async (ctx, next) => {
  // 获取 请求对象
  const obj = ctx.request.body;
  console.log(obj);

  //  新增一本书籍
  await Book.create(obj);

  // 成功状态码
  ctx.status = 200;

  // 响应内容
  ctx.body = {
    code: 200,
    data: null,
    msg: "新增成功",
  };

  // 执行下一个中间件
  await next();
});

// 修改一本书籍
router.put("/books/:id", async (ctx, next) => {
  // 获取 id
  const id = ctx.params.id;

  // 获取 请求对象
  const obj = ctx.request.body;

  // 修改一本书籍
  await Book.update(obj, { where: { id } });

  // 成功状态码
  ctx.status = 200;

  // 响应内容
  ctx.body = {
    code: 200,
    data: null,
    msg: "修改成功",
  };

  // 执行下一个中间件
  await next();
});

// 删除一本书籍
router.delete("/books/:id", async (ctx, next) => {
  // 获取 id
  const id = ctx.params.id;

  // 删除一本书籍
  await Book.destroy({ where: { id } });

  // 成功状态码
  ctx.status = 200;

  // 响应内容
  ctx.body = {
    code: 200,
    data: null,
    msg: "删除成功",
  };

  // 执行下一个中间件
  await next();
});

// 导出注册路由函数
export const regRouter = (app) => {
  // 解决跨域问题
  app.use(cors());

  // 请求体解析
  app.use(bodyparser());

  // 注册路由中间件
  app.use(router.routes());
};
